//
//  CYBaseView.h
//  Demo
//
//  Created by lc4y on 2017/11/5.
//  Copyright © 2017年 lc4y. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "CYListViewHeader.h"

@protocol CYBaseViewEventsDelegate <NSObject>

// 点击
- (void)cy_didSelectCellRow:(NSIndexPath *)rowIndexPath;

// cell编辑或者删除
- (void)cy_editCellRow:(NSIndexPath *)rowIndexPath menuIndex:(NSInteger)menuIndex;

@end

@interface CYBaseView : UIView <CYBaseViewCellDelegate,CYBaseViewEventsDelegate>

/** 滚动 **/
@property (nonatomic, assign) BOOL cy_listScroll;

/** 无数据视图 **/
@property(nonatomic,strong,readonly) CYNoDataView *cy_noDataView;

/** 无数据图片名称 **/
@property(nonatomic,copy) NSString *cy_noDataImageN;

/** 无数据标题 **/
@property(nonatomic,copy) NSString *cy_noDataTitleN;

/** 列表CellID **/
@property (nonatomic, copy) NSString *cy_cellID;

/** 列表HeaerID **/
@property (nonatomic, copy) NSString *cy_headerID;

/** 列表FooterID **/
@property (nonatomic, copy) NSString *cy_footerID;

/** tableView代理 **/
@property (nonatomic,weak) id <CYBaseViewCellDelegate> cy_delegate;

/** tableView代理 **/
@property (nonatomic,weak) id <CYBaseViewEventsDelegate> cy_eventDelegate;

/**
     function : 实例化列表
     desc     : 初始化默认列表样式
                tableView 默认Plain
                collectionView 默认FlowLayout
                如果想改变样式实现对应代理或者调用initWithLayout传入对应布局
 **/
- (instancetype)init;

/** 注册 Cell Class String  默认类名字符串作为CellID**/
- (void)cy_registerCellClass:(NSString *)cellClassString;

/** 注册 Cell Nib Name 默认NibName作为CellID**/
- (void)cy_registerCellNib:(NSString *)cellNibName;

/** 注册 Header Class String  默认类名字符串作为HeaderID**/
- (void)cy_registerHeaderClass:(NSString *)headerClassString;

/** 注册 Header Nib Name 默认NibName作为HeaderID**/
- (void)cy_registerHeaderNib:(NSString *)headerNibName;

/** 注册 Footer Class String  默认类名字符串作为FooterID**/
- (void)cy_registerFooterClass:(NSString *)footerClassString;

/** 注册 Footer Nib Name 默认NibName作为FooterID**/
- (void)cy_registerFooterNib:(NSString *)footerNibName;

/** 添加下拉刷新控件 **/
- (void)cy_addHeaderRefreshControl:(HeaderRefreshCallBack)refreshCallBack;

/** 添加上拉刷新控件 **/
- (void)cy_addFooterRefreshMoreControl:(FooterRefreshMoreCallBack)refreshCallBack;

/** 刷新完成 **/
- (void)cy_endRefreshControl;

/** 刷新列表方法 **/
- (void)cy_listViewReloadView;

@end
